﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace lab2.Roman.Money
{
    class Program
    {

        static void Main(string[] args)
        {
           Lab2();
            //CreateSortedArrayWhile();
            
           // Lab1();
            //GetUnSortedArray();
           // CreateSortedArray();
            // ReverseArray();

            //CreateRandomArray(25,-100,100);
            // MathTask4();
            // MathTaskMultiplicationTable();
            // MathTaskSumDevide();
            // MathTaskEvenUnevenDoubleNambers();
            // MathTaskSummAllDoubleNambers();
            // MathTaskNFactorial();                     
            // ReadIntFromConsole();
            // ReadDateTimeFromConsole();
            // ReadIntFromConsoleMaxMinValues(0, 99);
            // MathTask1SummNambers();
            // Money();
            //MathTask2MilesToKilometrs();
            Console.ReadLine();

        }




        static void Money()
        {
            int result=ReadIntFromConsoleMaxMinValues(0, 99) ;        
            int b; 
            int c; 
            int d;
            string grivny = "гривны";
            string griven = "гривен";
            string grivna = "гривна";
            while (true)
            {

              //  try
              //  {
                   /* Console.WriteLine("Введите число ");
                    string number = Console.ReadLine();
                    a = int.Parse(number);*/


                   
                      string one = "одна";
                      string two= "две";
                      string three = "три";
                      string four = "четыре";
                      string five = "пять";
                      string six = "шесть";
                      string seven = "семь";
                      string eight = "восемь";
                      string nine = "девять";
                      string ten = "десять";
                      string twenty = "двадцать";
                      string thirty = "тридцать";
                      string fourty = "сорок";
                      string fifty = "пятдесят";
                      string sixty = "шестдесят";
                      string seventy = "семдесят";
                      string eightty = "восемдесят";
                      string ninety = "девяносто";



                    b = result / 10;
                    c = result % 10;
                   

                    if (b == 1 & c == 1)//исключения от 10 до 19
                    {
                        Console.WriteLine("Oдиннадцать {0}", griven);
                    }
                    else if (b == 1 & c == 2)
                    {
                        Console.WriteLine("Двенадцать {0}", griven);
                    }

                    else if (b == 1 & c == 3)
                    {
                        Console.WriteLine("Тринадцать {0}", griven);
                    }

                    else if (b == 1 & c == 4)
                    {
                        Console.WriteLine("Четырнадцать {0}", griven);
                    }
                    else if (b == 1 & c == 5)
                    {
                        Console.WriteLine("Пятнадцать {0}", griven);
                    }
                    else if (b == 1 & c == 6)
                    {
                        Console.WriteLine("Шестнадцать {0}", griven);
                    }
                    else if (b == 1 & c == 7)
                    {
                        Console.WriteLine("Семнадцать {0}", griven);
                    }
                    else if (b == 1 & c == 8)
                    {
                        Console.WriteLine("Восемнадцать {0}", griven);
                    }
                    else if (b == 1 & c == 9)
                    {
                        Console.WriteLine("Девятнадцать {0}", griven);
                    }

                    else if (b >= 0 & c >= 0)
                    {
                    
                        if (c == 1)
                            Console.WriteLine("{0}{1} {2}", b, c, grivna);// 
                        else if (1 < c & c < 5)
                            Console.WriteLine("{0}{1} {2}", b, c, grivny);
                        else if (4 < c & c < 9)
                            Console.WriteLine("{0}{1} {2}", b, c, griven);
                        else if (c == 0)
                            Console.WriteLine("{0}{1} {2}", b, c, griven);

                      }
                    break;
                      /*  {
                            Console.WriteLine("Вы ввели число {0}", a);
                        }*/
                   // }
                  //  }
                
               // catch
                //{
                //    Console.WriteLine("Вы ввели некоректное значение");
               // }
                
            }

            
                   
           
          
        }
       
        
        static void PrintArray(int[] array)
        {
            for(int i = 0; i < array.Length; i++)
            {
                Console.Write("{0} |", array[i]);
            }
        }
        static void PrintJaggedArray (int[][] array)
        {
           

            for (int i = 0; i < array.Length; i++)
            {
                for (int j = 0; j < array.Length; j++)
                {
                    Console.Write("{0} ", array[i][j] );
                }
                Console.WriteLine();
            }
        }
        static int[] CreateSortedArray()
        {

            Console.WriteLine("Введите длинну массива");
            int arrayLenght = ReadIntFromConsole();
            int[] result = new int[arrayLenght];
            for (int i = 0; i < result.Length; i++)
            {
                result[i] = i;
         
            }
            PrintArray(result);
            return result;
        }
          static int[] CreateSortedArrayWhile()
        
          
          {
               Console.WriteLine("Введите длинну массива");
            int arrayLenght = ReadIntFromConsole();
            int[] result = new int[arrayLenght];
            int i = 0;
              while(i<result.Length)
              {
                  result[i] = i;
                  i++;
                

              }
              PrintArray(result);
              return result;
          }





        

        public static void Lab2()
               
        {


            Console.WriteLine("Введите количество массивов ");
               int arraysNumber = ReadIntFromConsole();

            Console.WriteLine("Введите минимальое значение ");
               int minValue = ReadIntFromConsole();

            Console.WriteLine("Введите максимальное значение ");
               int maxValue = ReadIntFromConsole();
               
            
            Console.WriteLine("Введите длинну ");
               int arrayLangth = ReadIntFromConsole();


           

             
                   int[][] arrayBig = new int[arraysNumber][];


                       for (int i = 0; i < arraysNumber; i++)
                       {

                           int[] arrayScreen = CreateRandomArray(arrayLangth, minValue, maxValue);
                           arrayBig[i] = arrayScreen;

                       }

                          // PrintArray(arrayScreen);
                         //  Console.ReadKey();


                     

                   Console.Clear();

               //   Console.Write("{0} ", arrayBig);
                PrintJaggedArray(arrayBig);
                   Console.ReadKey();
               
                

         
             
        }



        static void Lab1()
        {

          int[] array =  CreateRandomArray(10, -100, 100);
           PrintArray(array);
           Console.ReadKey();
           
            
           array = CreateSortedArray();
           PrintArray(array);
           Console.ReadKey();


        }
        static int[] CreateRandomArray(int lenght, int min, int max)

        {
            int[] array = new int[lenght];
            Random r = new Random();
            for (int i = 0; i < array.Length; i++)
            {
                array[i] = r.Next(min, max);

            }
             
          return array;
       
        
        }
        static void GetUnSortedArray()
        {
            int n = ReadIntFromConsole();
            int[] array = new int[n];
            int d = 0;
            for (int i = 0; i < array.Length; i++)
            {
                d = d + i;


                Console.Write("{0} | ", array[i]);
            }
        }
        static void ReverseArray()
        {
            Console.WriteLine("Введите длинну массива");
            int arrayLenght = ReadIntFromConsole();
            int[] reverseArray =  CreateSortedArray();// создание упорядоченного массива
            Array.Reverse(reverseArray); // переворот массива
            PrintArray(reverseArray);
            Console.ReadKey();


        }





        
        static double     MathTask4()
        {

            double n = ReadIntFromConsole();
            double i;
            int j;
            double sum1 = 0;
            int sum4 = 0;
            for (i = 1; i <= n; i++)
            {
                sum1 = sum1 + 1 / i;
               // Console.WriteLine("{0}", sum1);
            }
            Console.WriteLine("{0}", sum1);
           // return i;

            for (j = 1; j <= n; j++ )
            {
                sum4 = sum4 + j * j;
                Console.WriteLine("{0}",sum4);
            }
            return j;
        }
        static int     MathTaskMultiplicationTable()
        {

            int i;
            int n = ReadIntFromConsole();
            int res;
            for (i = 0; i <= 1000; i++)
            {
                res = n * i;

                Console.WriteLine("{0}  {1}={2}", n, i, res);
            }
            return i;
        }
        static int     MathTask1SummNambers()
        {
           
            int sum=0;
            int value = ReadIntFromConsole();
            for (int i = 0; i <= value; i++) 
            { 
              
                sum = sum + i;
              // Console.WriteLine("{0} + {1} = {2}", sum, i, sum + i +1);

               
            }
           Console.WriteLine("Сумма всех чисел равна {0}", sum);

            return sum; 
        }
        static double  MathTaskSumDevide()
        { 
            double n;
            double sum=0;
            for (n = 1; n <= 15; n++)
            {
                sum = 1 / (n*n*n);
                Console.WriteLine("Сумма {0}= {1}", n, sum);
            }
            Console.WriteLine("Конечный результат = {0}", sum);
            return n;
        }
        static int     MathTaskEvenUnevenDoubleNambers()
        {
            int even = 0;
            int uneven = 0;
            int value = 99;
            int i;
            int n;
            for (i = 10; i <= value; i++)
            {
                n = i % 2;

                if(n == 0)
                {
                    even = even + i;  
                    
                }
                else
                {
                    uneven = uneven + i;
                }
                               
            }
            Console.WriteLine("Сумма всех четных двузначных чисел равна {0}, а нечетных {1}", even, uneven);

            return i;
        }
        static int     MathTaskSummAllDoubleNambers()
        {

            int sum = 0;
            int value = 99;
            for (int i = 10; i <= value; i++)
            {

                sum = sum + i;
               // Console.WriteLine("{0} + {1} = {2}", sum, i, sum + i + 1);


            }
            Console.WriteLine("Сумма всех двузначных чисел равна {0}", sum);

            return sum;
        }
        static int     MathTaskNFactorial()
        {
           
          
            
            int n =1;
            int a = ReadIntFromConsole();
            for (int i = 1; i <= a; i ++ )
            {
                n = n * i;
               

            }
            
            Console.WriteLine("N! = {0}", n);
            return n;
        }
        static double  MathTask2MilesToKilometrs()
        {
            double mile;
            double kilometr ;
            for (mile = 0; mile <= 10; mile ++ )
            {
                kilometr = mile * 1.603;
                Console.WriteLine("{0} mile = {1} kilometr", mile, kilometr);
            }
           return mile;
        }
        
        
        
        
        
        static int ReadIntFromConsole()
        {
            {
                int a = 0;
                bool inputsuccess = false;
               while (!inputsuccess)
                {
                    try
                    {
                      
                        Console.WriteLine("");
                        string number = Console.ReadLine();
                        a = Int32.Parse(number);
                        inputsuccess = true;
                      /*  {
                            Console.WriteLine("Вы ввели число {0}", a);

                        }
                        */
                    }
                    catch
                    {
                        Console.WriteLine("Вы ввели некоректное значение");


                    }
                   

                }
               return a; 
            }
        }
        static DateTime ReadDateTimeFromConsole()
        {
            Console.WriteLine("Введите дату в формате: dd.mm.yyyy");

           
            DateTime datenow;
            while (!DateTime.TryParse(Console.ReadLine(), out datenow))
            {
                Console.WriteLine("Введите дату в формате: dd.mm.yyyy");
            }
          return datenow;
        }
        static int ReadIntFromConsoleMaxMinValues(int min, int max)
        {
            int result = ReadIntFromConsole();
            while (true)
            {
          
                if (result >= min && result <max)
                    return result;

                else
                    Console.WriteLine("Введите число, входящее в область допустимых значений от {0}  до {1}", min, max);
                result = ReadIntFromConsole();
            }
           
        }
       
        
        
        
        
        
        
        
       
    }
}
